home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / dev / gui / gui4cli.lha / Gui4Cli / Tools / Cli.gc < prev    next >
Encoding:
Gui4CLI script  |  1999-10-28  |  5.7 KB  |  215 lines

  1. G4C
  2.  
  3. ; This GUI is similar to the Workbench "Execute command" GUI, but more.
  4. ; There is a textin gadget for entering commands, buttons for choosing
  5. ; files, changing the directory, and opening a newshell.
  6.  
  7. ; More important, it can also send ARexx commands to the port shown
  8. ; in the other (bottom right) textin gadget (which can also be changed)
  9.  
  10. ; USE :
  11. ; Guiload guis:tools/cli.gc <commandline> <mode>    - or
  12. ; GuiOpen cli.gc <commandline> <mode>
  13.  
  14.  
  15. WINBIG 48 34 554 39 "Enter commands :"
  16. WinSmall 0 -1 422 30
  17. WinType  11110010
  18. resinfo 8 640 256
  19.  
  20. BOX 0 0 554 39 out BUTTON
  21.  
  22. ; ------------------------------------------------------------------
  23. ;               System events
  24. ; ------------------------------------------------------------------
  25.  
  26. xOnLoad cl_Main cl_Mode
  27.     if $cl_Mode < ' '
  28.        cl_Mode = G4C
  29.     endif
  30.     cl_Port = $$G4C.port    ; Port name (can also sendrexx to ourselves)
  31.     guiopen cli.gc
  32.  
  33.     xonRELOAD cl_Main cl_Mode
  34.     guiopen cli.gc
  35.  
  36. xOnOpen
  37.     setwintitle cli.gc '$$CURRENT_DIR'
  38.     Update cli.gc 1 $cl_Main        ; show whatever the command line is 
  39.     SetGad cli.gc 1 ON              ; to get the cursor in the gadget immediately
  40.     ; update cycler to mode given
  41.     docase $cl_Mode
  42.        case = G4C
  43.             update cli.gc 10 0
  44.             break
  45.        case = CLI
  46.             update cli.gc 10 1
  47.             break
  48.        case = RUN
  49.             update cli.gc 10 2
  50.             break
  51.        case = EXEC
  52.             update cli.gc 10 3
  53.             break
  54.     endcase
  55.     stack = $$g4c.stack
  56.     update cli.gc 12 $stack
  57.  
  58. xOnRMB
  59.     status
  60.  
  61. ; ------------------------------------------------------------------
  62. ;===============> Main text input gadget
  63. ; ------------------------------------------------------------------
  64.  
  65. XTEXTIN 10 5 513 14 "" cl_Main "" 512
  66.     gadid 1
  67.     gadhelp 'Enter Command line'
  68.     gosub cli.gc DoCommand
  69.  
  70. XBUTTON 525 5 20 14 C
  71.     gadhelp 'Clear Command line'
  72.     cl_Main = ""
  73.     update cli.gc 1 ""
  74.  
  75. ; ------------------------------------------------------------------
  76. ;========> Cycler for choosing ARexx/CLI/RUN modes
  77. ; ------------------------------------------------------------------
  78.  
  79. XCYCLER 10 20 80 14 "" cl_Mode
  80.     GadID 10 ; we may want to change it from elsewhere
  81.     gadhelp 'Choose action to take on command line'
  82.     CSTR ARexx     G4C
  83.     CSTR CLI       CLI
  84.     CSTR RUN       RUN
  85.     CSTR Exec      EXEC
  86.  
  87.  
  88. ; ------------------------------------------------------------------
  89. ;========> GO button (to execute the command)
  90. ; ------------------------------------------------------------------
  91.  
  92. XBUTTON 90 20 40 14 "GO!"
  93.     gadhelp 'Execute action shown in Cycler'
  94.     gosub cli.gc DoCommand
  95.  
  96.  
  97. ; ------------------------------------------------------------------
  98. ;=======> button for file requester for commands
  99. ; ------------------------------------------------------------------
  100.  
  101. XBUTTON 135 20 65 14 "Cmd.."
  102.     gadhelp 'Choose a Command'
  103.     cl_cmd = ""
  104.     REQFILE -1 -1 300 -60 "Choose Files" LOAD cl_cmd  sys:c
  105.     if $cl_cmd > ""
  106.        cl_temp = $cl_Main
  107.        cl_Main = '$cl_cmd '
  108.        appvar cl_Main $cl_temp
  109.        update cli.gc 1 $cl_Main
  110.        delvar cl_temp
  111.     endif
  112.  
  113. ; ------------------------------------------------------------------
  114. ;========> Button for File requester for filenames
  115. ; ------------------------------------------------------------------
  116.  
  117. XBUTTON 200 20 65 14 "Files.."
  118.     gadhelp 'Choose a File as an argument'
  119.     cl_File = ""
  120.     REQFILE -1 -1 300 -60 "Choose Files" MULTI cl_File  $$CURRENT_DIR
  121.     if $cl_File > ""
  122.        appvar cl_Main $cl_File
  123.        update cli.gc 1 $cl_Main
  124.     endif
  125.  
  126.  
  127. ; ------------------------------------------------------------------
  128. ;========> Button to open a shell
  129. ; ------------------------------------------------------------------
  130.  
  131. XBUTTON 265 20 40 14 Cli
  132.     gadhelp 'Open a Shell'
  133.     CLI 'Newshell "con:0/150/640/100/NewShell/CLOSE"'
  134.  
  135.  
  136. ; ------------------------------------------------------------------
  137. ;========> Button to change directory
  138. ; ------------------------------------------------------------------
  139.  
  140. XBUTTON 305 20 40 14 CD
  141.     setvar cl_Dir ""
  142.     gadhelp "Change Gui4Cli's current directory"
  143.     REQFILE -1 -1 300 -60 "Choose directory" DIR cl_Dir ""
  144.     if $cl_Dir > ""
  145.        CD $cl_Dir
  146.        SetWinTitle cli.gc '$cl_Dir'
  147.     endif
  148.  
  149. ; ------------------------------------------------------------------
  150. ;========> Set stack size
  151. ; ------------------------------------------------------------------
  152.  
  153. XTEXTIN 365 20 55 14 "" stack 4000 12
  154.     gadid 12
  155.     gadhelp 'Sets the STACK size for CLI or RUN'
  156.     setstack $stack
  157.  
  158. XBUTTON 350 20 15 14 "<"
  159.     gadhelp 'Decrease stack size'
  160.     if $$g4c.stack > 1500             ; minimum stack size
  161.        stack == $$g4c.stack - 1024
  162.     endif
  163.     update cli.gc 12 $stack
  164.     setstack $stack
  165.  
  166. XBUTTON 420 20 15 14 ">"
  167.     gadhelp 'Increase stack size'
  168.     stack == $$g4c.stack + 1024
  169.     update cli.gc 12 $stack
  170.     setstack $stack
  171.  
  172. ; ------------------------------------------------------------------
  173. ;========> TEXTin gadget to get port name for sendrexx command
  174. ; ------------------------------------------------------------------
  175.  
  176. XTEXTIN 440 20 105 14 "" cl_Port "Gui4Cli" 40
  177.     GadID 2
  178.     gadhelp 'Port name for sending ARexx commands'
  179.  
  180.  
  181. ; ------------------------------------------------------------------
  182. ;========> ROUTINE to execute command
  183. ; ------------------------------------------------------------------
  184.  
  185. xROUTINE DoCommand
  186.     docase $cl_Mode
  187.     case  = G4C
  188.             SendRexx $cl_Port $cl_Main
  189.             break
  190.     case  = CLI
  191.             CLI $cl_Main
  192.             break
  193.     case  = RUN
  194.             RUN $cl_Main
  195.             break
  196.     case  = EXEC
  197.             CLI 'execute $cl_Main'
  198.             break
  199.     endcase
  200.     if $$RETCODE = 0
  201.        SetWinTitle cli.gc "OK - $$G4C.DIR"
  202.     else
  203.        SetWinTitle cli.gc "* ERROR * $$RETCODE $$REXXRET"
  204.     endif
  205.  
  206.  
  207. ; ------------------------------------------------------------------
  208. ;=========> before commands are executed, we restore the window title
  209. ; ------------------------------------------------------------------
  210.  
  211. xBEFORE
  212.     SetWinTitle cli.gc '$$CURRENT_DIR'
  213.  
  214.  
  215.